import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
Scanner in = new Scanner(System.in);
        int n=in.nextInt();

        System.out.println(fib(1));
        System.out.println(fib(2));
        System.out.println(fib(4));
        System.out.println(fib(7));
    }
    //使用函数不用递归实现斐波那契，运算速率会更好
    public static int fib(int n){
        int a=1;
        int b=1;
        int c=1;
        for (int i = 3; i <= n ; i++) {
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
}

//用递归按顺序打印整数各位
class Test1 {
    public static void main(String[] args) {
        fac(456);
    }
    public static void fac(int n){
        //法一 更好理解一点
        if(n<10){
            System.out.println(n%10);
            //如果无else,要用return来结束程序,否则会进入死循环
        }else{
        fac(n/10);
        System.out.println(n%10);
        }
        /*法二
        if(n>9){
            fac(n/10);
        }
        System.out.println(n%10);  //不能else否则递归回不去*/

    }
}
//数组
class Test3 {
    public static void main(String[] args) {
        int[] arry = {1,2,3,4};     //静态分配内存  ，直接赋值
        int[] arry1 = new int[]{1,2,3};//动态分配内存
        int[] arry3 = new int[4]; //只是分配了内存，但没有赋值，只有默认值，且默认值为0
        String[] arr4 = {"ayya","asy"};    //相当于C语言中的指针数组
        //当不初始化时，有值的数据类型默认值为0，boolean类型为false

        //数组的长度
        int len=arry.length;
        System.out.println(len);
        //输出
        //1、用for循环
        for (int i = 0; i < arry.length; i++) {
            System.out.print(arry[i]+" ");
        }
        System.out.println();

        //2、foreach遍历每一个元素，但不能查下标
        for (int a:arry) {
            System.out.print(a+" ");
        }
        System.out.println();

        //3、利用Arrays函数tostring(变成字符串)打印
        String s=Arrays.toString(arry);
        System.out.println(s);
    }
}